ao
グローバルライブラリは、メッセージの送信、プロセスの生成などに使用されます。
使用例
グローバル ao
オブジェクトは、プロセス内のどこからでもアクセス可能です:
lua
-- sends a message to another process ("Transfer" action)
ao.send({
Target = "usjm4PCxUd5mtaon7zc97-dt-3qf67yPyqgzLnLqk5A",
Action = "Transfer",
Recipient = "XjvCPN31XCLPkBo9bUeB7vAK0VC6-eY52-CS-6Iho8F",
Quantity = tostring(1045)
})
モジュール変数
ao.id
:{string}
プロセスの Arweave ID を保持します。ao.authorities
:{table}
任意の信頼できる呼び出し元の配列です。ao._module
:{string}
各呼び出し時に実行されるプロセスの WASM ベースモジュールです。ao._ref
:{number}
一回の呼び出しインスタンスで送信されたメッセージのカウンターです。ao._version
:{string}
ao グローバルライブラリのバージョンです。ao.env
:{table}
初期化メッセージからのプロセス環境です。
ao.env
ao.env
グローバル変数は、プロセスの初期化メッセージに関する情報を保持します。以下のスキーマに従います:
json
{
"type": "object",
"properties": {
"Process": {
"type": "object",
"properties": {
"Id": {
"type": "string",
"example": "A1b2C3d4E5f6G7h8I9j0K1L2M3N4O5P6Q7R8S9T0"
},
"Owner": {
"type": "string",
"example": "Xy9PqW3vR5sT8uB1nM6dK0gF2hL4jC7iE9rV3wX5"
},
"TagArray": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"example": "App-Name"
},
"value": {
"type": "string",
"example": "aos"
}
}
},
"example": [{ "name": "App-Name", "value": "aos" }]
},
"Tags": {
"type": "object",
"propertyNames": {
"type": "string"
},
"patternProperties": {
"": {
"type": "string"
}
},
"example": {
"App-Name": "aos"
}
}
}
}
}
}
モジュール関数
log()
提供された値/メッセージを Results.Output
テーブルに追加します。これは後で aoconnect
ライブラリを使用して読み取ることができます。デバッグや呼び出し元への出力値の返却に便利です。
- パラメータ:
txt
:{any}
出力テーブルに追加される値/メッセージ
- 戻り値:
{void}
Examples
lua
...
ao.log("Breakpoint reached")
...
ao.log({
Message = "Transferred " .. quantity .. " tokens to " .. target,
Quantity = quantity,
Recipient = target
})
send()
他のプロセスにメッセージを送信し、提供されたメッセージアイテムをプロセスのアウトボックスに挿入します。この際、ao スペックに準拠した メッセージタグも付加されます。
- パラメータ:
msg
:{table}
送信されるメッセージ
- 戻り値: 適用されたタグと
DataItem
フィールドを持つ送信メッセージアイテム。
注:
msg
テーブルの各フィールドはDataItem
タグとして追加されますが、次のフィールドは例外です:"Target"
,"Data"
,"Anchor"
,"Tags"
。これらのフィールドはルートレベルのDataItem
フィールドとして解釈されます。
Example
lua
-- sends a message to "XjvCPN31XCLPkBo9bUeB7vAK0VC6-eY52-CS-6Iho8F"
-- with the tag { "name": "Action", "value": "Ping" }
ao.send({
Target = "XjvCPN31XCLPkBo9bUeB7vAK0VC6-eY52-CS-6Iho8F",
Action = "Ping"
})
spawn()
別のプロセスから新しいプロセスを生成することを可能にします。
- パラメータ:
module
:{string}
新しいプロセスで使用されるモジュールの Arweave トランザクション IDmsg
:{table}
プロセスを初期化するメッセージ。形式は 上記 の説明に従います。
- 戻り値: 初期化メッセージアイテム
Example
lua
ao.spawn("n0BFH80b73mi9VAWUzyuG9gEC3LI2zU2BFxum0N8A9s", {
["Custom-Tag"]: "Custom-Value"
})